# Copyright (C) 2006 XenSource Ltd.
#============================================================================
+import errno
+import socket
import types
import xmlrpclib
from xen.util.xmlrpclib2 import UnixXMLRPCServer, TCPXMLRPCServer
"; authentication has been disabled for this server." or
".")
- if self.use_tcp:
- log.info("Opening TCP XML-RPC server on %s%d%s",
- self.host and '%s:' % self.host or
- 'all interfaces, port ',
- self.port, authmsg)
- self.server = TCPXMLRPCServer((self.host, self.port),
- self.hosts_allowed,
- logRequests = False)
- else:
- log.info("Opening Unix domain socket XML-RPC server on %s%s",
- self.path, authmsg)
- self.server = UnixXMLRPCServer(self.path, self.hosts_allowed,
- logRequests = False)
-
+ try:
+ if self.use_tcp:
+ log.info("Opening TCP XML-RPC server on %s%d%s",
+ self.host and '%s:' % self.host or
+ 'all interfaces, port ',
+ self.port, authmsg)
+ self.server = TCPXMLRPCServer((self.host, self.port),
+ self.hosts_allowed,
+ logRequests = False)
+ else:
+ log.info("Opening Unix domain socket XML-RPC server on %s%s",
+ self.path, authmsg)
+ self.server = UnixXMLRPCServer(self.path, self.hosts_allowed,
+ logRequests = False)
+ except socket.error, exn:
+ log.error('Cannot start server: %s!', exn.args[1])
+ ready = True
+ running = False
+ return
# Register Xen API Functions
# -------------------------------------------------------------------
def cleanup(self):
log.debug("XMLRPCServer.cleanup()")
+ try:
+ self.server.socket.close()
+ except Exception, exn:
+ log.exception(exn)
+ pass
def shutdown(self):
self.running = False